/** Clase javaScript para la pantalla de adm de Mesa de Examenes */
$(document).ready(function () {
	$('#responseMessages').hide();
	loadGrid();
});

function loadDialogs(){
	
	//Seteo de propiedades de la ventana de confirmacion	
	$('#dialog-confirm-cerrar-mesa').dialog({		
		resizable: false,
		autoOpen: false,
	    height:'auto',
	    modal: true,
	    close: $(this).close,
	    buttons: {
	    	"Cerrar Mesa": function() {
	    		try{
	    			var record = $('#MesaExamenTableContainer').jtable('selectedRows').data('record');
	    			
//	    			alert("Record = " + record.idm);
	    			var idm = record.idm;
	    			var folio = record.folio;
	    			var libro = record.libro;
	    			
	    			if(folio == 0 || libro == 0){
	    				alert('No se puede cerrar una mesa sin que se haya asignado un Libro y un Folio');
	    			}else{
	    				cerrarMesaAction(idm);	
	    			}
	        		$( this ).dialog( "close" );	    			
	    		}catch(e){
	    			alert(e.message);
	    		}    		
	        },
	        Cancel: function() {
	        	$( this ).dialog( "close" );
	        }
	     }
	});	
}

//Inicializacion de la tabla
function loadGrid(){
	
	$('#MesaExamenTableContainer').jtable({
        title: 'Mesas de Examen habilitadas',
        paging: true, //Enable paging
        pageSize: 10, //Set page size (default: 10)
        sorting: true, //habilita ordens
        defaultSorting: 'idm ASC', //Orden default
        selecting: true, //habilita seleccion
//      multiselect: true, // Permite multiple seleccion
//      selectingCheckboxes: true, //Show checkboxes on first column
        actions: {
        	listAction:'CRUDMesaExamen?action=listMesasExamen'	
        	, createAction :  'CRUDMesaExamen?action=crearMesaExamen'            
            , updateAction: 'CRUDMesaExamen?action=updateMesaExamen'
        }	
		, fields: {
            idm: { title: 'IDM', key: true,create: false, edit: false,type : 'hidden'}, 
            Exams: {
                title: '...',
                width: '1%',
                sorting: false,
                edit: false,
                create: false,
                display: function (infoMesa) {
                	//Solo muestro el icono si esta abierta la mesa
                	if(infoMesa.record.estado == 'A'){
	                    //Create an image that will be used to open child table
	                    var $img = $('<img src="images/list_metro.png" title="Alumnos Inscriptos" />');
	                    //Open child table when user clicks the image
	                    $img.click(function () {
	                        $('#MesaExamenTableContainer').jtable('openChildTable',$img.closest('tr'),{ 
	                        	title: 'Alumnos Inscriptos a la Materia: ' + infoMesa.record.materia,
	                        	actions: {
	                        		listAction: 'CRUDMesaExamen?action=listStudents&idm=' + infoMesa.record.idm
					                , updateAction : 'CRUDMesaExamen?action=updateNotaAlumno'
	                           	},
	                			fields: {
	                				idm: 		{ title: 'Idm', type: 'hidden', defaultValue: infoMesa.record.idm, edit: false, key : true},
	                                legajoA: 	{ title: 'Legajo', key: true, edit: false},
	                                apenom:		{ title: 'Alumno', width: '30%', edit: false},
	                                carrera:	{ title: 'Carrera', width: '30%', edit: false},		
	                                codigoMe: 	{ title: 'Codigo Materia', edit : false, key : true, type: 'hidden'},
	                                materia:	{ title: 'Materia', width: '20%', edit : false, list: false},
	                                fecha_ins: 	{ title: 'Fecha Insc.', edit: false, type: 'date', displayFormat: 'dd-mm-yy'},
	                                nota: 		{ title: 'Nota', width: '10%', options: ["0","1", "2", "3", "4", "5", "6", "7", "8","9","10"], edit : true}
	                			}
	                        }, 
	                        function (data) {data.childTable.jtable('load');});
	                    });
	                    //Return image to show on the person row
	                    return $img;
	                }
                }
            },           
            
            fecha: 			{ title: 'Fecha',width: '8%',create: true,edit: false ,type: 'date',displayFormat: 'dd-mm-yy',inputClass: 'validate[required]'},
            libro: 			{ title: 'Libro',create: true,edit : true,width: '5%',inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            folio: 			{ title: 'Folio',create: true,edit: true,width: '5%' ,inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            codigoM: 		{ title: 'Materia',create: true, edit: false,list: false, options:'CRUDGeneral?action=listMateriasLabel',inputClass: 'validate[required]'},
            materia:		{ title: 'Materia',width: '12%',edit: false, create: false},
            titular: 		{ title: 'Titular',edit: false,list: false,create: true, options:'CRUDGeneral?action=listDocentesLabel', inputClass: 'validate[funcCall[validateTitular]]'},
            apeNomTitular: 	{ title: 'Titular',width: '10%',edit : false, create: false},
            vocal1: 		{ title: 'Vocal 1',id:'vocal1' ,edit: false ,list: false ,create: true, options:'CRUDGeneral?action=listDocentesLabel',inputClass: 'validate[funcCall[validateVocal1]]'},
            apeNomV1:		{ title: 'Vocal 1',width: '10%',edit : false , create: false},
            vocal2: 		{ title: 'Vocal 2',edit: false ,list: false,create: true, options:'CRUDGeneral?action=listDocentesLabel',inputClass: 'validate[funcCall[validateVocal2]]'},
            apeNomV2:		{ title: 'Vocal 2',width: '10%',edit: false , create: false },
            cantExam: 		{ title: 'Total Alumnos',width: '7%',edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            cantAus: 		{ title: 'Ausentes',width: '7%',edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            cantAprob: 		{ title: 'Aprobados',width: '7%',edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            carrera:		{ title: 'Carrera', edit: false, create: false, list: false},
            
            opciones: {
                title: 'gg',
                width: '10%',
                sorting: false,
                create: false,
                edit: true,
                list: true,
                display: function (data) {
                	if(data.record.estado == 'A'){
	                    if (data.record) {
	                    	return '<button title="Cerrar Mesa de Examen" class="jtable-command-button jtable-close-button" onclick="dialogCerrarMesa(); return false;"><img src="js/jquery/themes/metro/close.png"></button>';
	                    }
                	}
                }
            },
            //Columna con accion personalizado para cerrar mesa
            opciones: {
                title: '',
                width: '1%',
                sorting: false,
                create: false,
                edit: false,
                list: true,
                display: function (data) {
                	if(data.record.estado == 'A'){
	                    if (data.record) {
	                    	return '<button title="Cerrar Mesa de Examen" class="jtable-command-button jtable-close-button" onclick="dialogCerrarMesa(); return false;"><img src="js/jquery/themes/metro/close.png"></button>';
	                    }
                	}
                }
            },           
         },
         toolbar: {        	
        	    items: [{
	        	    	//Agrego un .ico por  problemas con mostrar la miniatura
	        	        icon: 'images/doc_pdf.ico',
	        	        text: 'Acta Volante (Pdf)',        	        
	        	        click: function () {
	        	        	var fila = $('#MesaExamenTableContainer').jtable('selectedRows').data('record');
	        	        	if(fila == null){
	        	        		alert('Debe Seleccionar una mesa a Exportar');	        	        		
	        	        	}else{
	        	        		exportActaVolante(fila);
	        	        	}
	        	        }        	        
        	    	},
        	        {        	    
        	    	//Agrego un .ico por  problemas con mostrar la miniatura
        	        icon: 'images/doc_pdf.ico',
        	        text: 'Acta Definitiva (Pdf)',        	        
        	        click: function () {
        	        		alert('hice un PDF');
        	        }        	        
        	    }]
        	},
        	//Una vez que se inserto satisfactoriamente el registro
        	recordAdded: function(event, data){
        		
        		setSuccessMsg($('#responseMessages'), 'Grabado Exitosamente!');
            	$('#responseMessages').show();
            	setTimeout(function(){           		
            			$('#responseMessages').hide();
            		}, 10000);  
                //after record insertion, reload the records
                $('#MesaExamenTableContainer').jtable('load');
            },
            //Una vez que se actualizo satisfactoriamente el registro
            recordUpdated: function(event, data){
            	
            	setSuccessMsg($('#responseMessages'), 'Grabado Exitosamente!');
            	$('#responseMessages').show();
            	setTimeout(function(){           		
            			$('#responseMessages').hide();
            		}, 10000);            		
                //after record updation, reload the records
                $('#MesaExamenTableContainer').jtable('load');
            },
    	
    	 //Initialize validation logic when a form is created
        formCreated: function (event, data) {
//        	alert(JSON.stringify(data.form));	
            data.form.validationEngine();
        },
        //Validate form when it is being submitted
        formSubmitting: function (event, data) {        	
        	return data.form.validationEngine('validate');        	
        },
        //Dispose validation logic when form is closed
        formClosed: function (event, data) {
            data.form.validationEngine('hide');
            data.form.validationEngine('detach');
        }        
    });
    /**
     * Carga la lista en la grilla
     * luego ejecuta la inicializacion de los dialogos en modo CallBack 
     */
    $('#MesaExamenTableContainer').jtable('load',loadDialogs());
    
    //Visible o no vivible segun perfil =)
//    if($('#user').val() == 1)
//    	$('#MesaExamenTableContainer').jtable('changeColumnVisibility','opciones', 'hidden');
//    else
//      	$('#MesaExamenTableContainer').jtable('changeColumnVisibility','opciones', 'visible');
//    	
    
    
}


//Abre el popUp en modo MODAL
function dialogCerrarMesa(){	
	$('#dialog-confirm-cerrar-mesa').dialog('option','modal',true).dialog('open');
}

//Accion que realiza el cierre de la mesa
function cerrarMesaAction(idm) {	
	
	var param = '&idm=' + idm;	
	callJsonAction("CRUDMesaExamen?action=cerrarMesaExamen" + param, 'successAction', 'errorAction');
}

/*
 * En caso de que en la accion haya ocurrido algun error
 */
function errorAction(){	
	
	setErrorMsg($('#responseMessages'), 'No se pudo realizar la accion deseada!');
	$('#responseMessages').show();	
	setTimeout(function(){           		
		$('#responseMessages').hide();
	}, 10000);		
}


/*
 * Si Salio bien de la accion
 */
function successAction(msg){
	
	setSuccessMsg($('#responseMessages'), 'Grabado Exitosamente!');
	$('#responseMessages').show();	
	setTimeout(function(){           		
		$('#responseMessages').hide();
	}, 10000);	
//	$('#responseMessages').hide();
	loadGrid();
}

/**
 * Funciones que valida que no se repitan los docentes en los cargos
 * 
 * los campos dicen $('#Edit-') por que es el nombre que le asigna el jtable cuando
 * arma la pantalla para editar o crear
 */
function validateTitular(field, rules, i, options){	
	if(field.val()  == $('#Edit-vocal1').val()
			|| field.val()  == $('#Edit-vocal2').val()){		
		return 'No se puede asignar un Docente a varios cargos';
	}
}

function validateVocal1(field, rules, i, options){	
	if(field.val() == $('#Edit-vocal2').val() 
			|| $('#Edit-titular').val()  == field.val()){		
		return 'No se puede asignar un Docente a varios cargos';
	}
}

function validateVocal2(field, rules, i, options){	
	if($('#Edit-vocal1').val() ==field.val() 
			|| $('#Edit-titular').val()  == field.val()){		
		return 'No se puede asignar un Docente a varios cargos';
	}
}

/** */

/**
 * Funcion 	que procesa los datos para mandar a imprimir el PDF
 * 
 */
function exportActaVolante(record){
	
	var param = "";
	param = param + "&idm="+ record.idm;
	param = param + "&carrera=" + record.carrera;
	param = param + "&materia=" + record.materia;
	param = param + "&prof=" + record.apeNomTitular; 
	
	callJsonAction("CRUDMesaExamen?action=exportarActaVolante" + param, '', 'errorAction');	
}
